home *** CD-ROM | disk | FTP | other *** search
- /* $Id: evxapi.h 1.56 1995/10/29 06:36:41 JOHN Exp $ */
- #ifndef __EVXAPI__
- #define __EVXAPI__
-
- #ifndef __XRTYPES__
- #include "XRTypes.h"
- #endif
-
- #ifndef __cplusplus
- #ifndef class
- #define class typedef void*
- #endif
- #endif
-
- class TShadingDefinition;
- class TLight;
- class TTree;
- class TEVOffscreen;
- class EVXTreeIterator;
- class T2DLineArt;
- class TCamera;
- class TBackground;
- class TBackdrop;
- class TAtmosphere;
- class WhileOffscreenFocus;
- class SDGraphicDevice;
-
- struct RayHitParameters;
- struct RayHit3D;
- struct Ray3D;
- struct ShadingInOut;
- struct ShadingFlags;
- struct TLightTraceElement;
- struct UVSpaceInfo;
- struct FACET3D;
- struct PATCH3D;
- struct VERTEX3D;
-
- //ER 3.1
- struct TZBInfo;
-
- #if defined(qPointersD0) && defined(__MWERKS__) && defined(qPowerPC)
- #pragma pointers_in_D0
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- //----Memory allocation---
- void* RDXAPI EVXmalloc (unsigned long size);
- void* RDXAPI EVXcalloc(unsigned long nmemb, unsigned long size);
- void* RDXAPI EVXrealloc (void* p, unsigned long size);
- void RDXAPI EVXfree (void* p);
-
- //------Multitasking
- void RDXAPI EVXYield(short ticks);
- long RDXAPI EVXTickCount();
-
- //---- TTree---
- long RDXAPI EVXSceneGetNLights(TTree* This);
- TLight* RDXAPI EVXGetIndLight(TTree* This,long i);
-
- typedef void (RDXAPITYPE *EVXTreeForEachInstanceCallBack)(TINSTANCE *anInstance,void *priv);
- void RDXAPI EVXTreeForEachInstance(TTree* This,EVXTreeForEachInstanceCallBack proc,void *priv);
- void RDXAPI EVXTreeForEachExtraInstance(TTree* This,EVXTreeForEachInstanceCallBack proc, TCamera *camera, void *priv);
-
- //---- TINSTANCE---
- void RDXAPI EVXInstanceGetGlobalTransform(TINSTANCE* This,TRANSCALE* ats);
- void RDXAPI EVXInstanceDoShade(TINSTANCE* This,ShadingInOut* theShIO);
- void RDXAPI EVXInstanceGetMainColors(TINSTANCE* This,COLOR* Color1,COLOR* Color2);
- void RDXAPI EVXInstanceGetShadingFlags(TINSTANCE* This,ShadingFlags *flags);
- long RDXAPI EVXInstanceGetShadingLevel(TTree* This);
- long RDXAPI EVXInstanceGetInstanceKind(TINSTANCE* This); // Primitive=1, SceneInstance=2, Camera=3, Light=4
- long RDXAPI EVXInstanceGetIndex(TINSTANCE* This);
-
- //----TLight----
- void RDXAPI EVXLightGetGlobalTransform(TLight* This,TRANSFORM *atf);
- BOOLEAN RDXAPI EVXLightGetColor(TLight* This,const VECTOR3 *QQ,const VECTOR3 *DD,const FIXED *dist,COLOR *acolor,BOOLEAN *callForShadowEffect);
- BOOLEAN RDXAPI EVXLightGetDirection(TLight* This, const VECTOR3 *QQ, VECTOR3 *DD, FIXED *dist);
- void RDXAPI EVXLightShadowEffect(TLight* This,const FIXED *distThru,const FIXED *distTotal,COLOR *acolor);
- TLightTraceElement* RDXAPI EVXLightGetNewTrace(TLight* This, short *nb);
- long RDXAPI EVXLightGetPrimitiveID(TLight* This);
- void RDXAPI EVXLightForEachShadowBuffer(TLight* This, void (*proc)(BOOLEAN lightType, TRANSFORM *atf, FIXED halfAngle, void* priv), void* priv);
-
- //----TCamera----
- BOOLEAN RDXAPI EVXUVToRay(TCamera *This,const VECTOR2 *uv,VECTOR3 *OO,VECTOR3 *DD);
- BOOLEAN RDXAPI EVXXYZToUV(TCamera *This,const VECTOR3 *PP,VECTOR2 *uv,FIXED *zz);
- void RDXAPI EVXGetGlobalToCameraTransform(TCamera *This,TRANSFORM *aTF);
- long RDXAPI EVXGetPrimitiveID(TCamera *This);
- long RDXAPI EVXCameraClip3D(TCamera* This, FACET3D* RDDLocalFace, VERTEX3D* RDDLocalVertice,
- FACET3D* RDDCameraFace, VERTEX3D* RDDCameraVertice,
- FIXED *ClipBox);
-
- //----TBackground----
- void RDXAPI EVXBdGetUVColor(TBackdrop *This,const VECTOR2 *uv,const BOX2D *uvMinMax,COLOR *acolor);
- void RDXAPI EVXBgGetDirectionColor(TBackground *This,const VECTOR3 *DD,COLOR *acolor);
-
-
- //----TAtmosphere----
- void RDXAPI EVXAtmosphericLocal(TAtmosphere *This,const VECTOR3 *AA,const VECTOR3 *BB,COLOR *filter);
- void RDXAPI EVXAtmosphericGlobal(TAtmosphere *This,const VECTOR3 *PP,const VECTOR3 *DD,COLOR *filter);
-
-
- //---- TEVOffScreen---
- TEVOffscreen* RDXAPI EVXOffNew();
- void RDXAPI EVXOffDelete(TEVOffscreen* theOffscreen);
- void RDXAPI EVXOffInitialize(TEVOffscreen* This,short h,short v,short depth);
- short RDXAPI EVXOffGetDepth(TEVOffscreen* This);
- WhileOffscreenFocus* RDXAPI EVXFocus(TEVOffscreen* This);
- void RDXAPI EVXUnFocus(WhileOffscreenFocus* theFocusSaver);
- void RDXAPI EVXOffCopyBits(SDGraphicDevice *aGD,TEVOffscreen* This,RECT* source,RECT* dest);
- void RDXAPI EVXOffErase(TEVOffscreen* This);
- void RDXAPI EVXOffSetPosition(TEVOffscreen* This,short h,short v);
- void RDXAPI EVXOffGoRight(TEVOffscreen* This);
- void RDXAPI EVXOffGoLeft(TEVOffscreen* This);
- void RDXAPI EVXOffGoDown(TEVOffscreen* This);
- void RDXAPI EVXOffGoUp(TEVOffscreen* This);
- void RDXAPI EVXOffPut1(TEVOffscreen* This,unsigned char value);
- void RDXAPI EVXOffPut8(TEVOffscreen* This,unsigned char value);
- void RDXAPI EVXOffPut32(TEVOffscreen* This,long value);
- unsigned char RDXAPI EVXOffGet1(TEVOffscreen* This);
- unsigned char RDXAPI EVXOffGet8(TEVOffscreen* This);
- unsigned long RDXAPI EVXOffGet32(TEVOffscreen* This);
- void RDXAPI EVXOffPut(TEVOffscreen* This, void* buffer);
- void RDXAPI EVXOffGet(TEVOffscreen* This, void* buffer);
-
-
- //-----TBuffer copydata-----
- class TBuffer;
- class TChunk;
-
- void RDXAPI EVXBufferGetChunkInfo(TBuffer* This,long *sizeH,long *sizeV,long *rowBytes,long *depth);
- typedef void (RDXAPITYPE *EVXBufferForEachChunkCallBack)(TChunk *achunk,const RECT *aclip,short Ph,short Pv,void *priv);
- void RDXAPI EVXBufferForEachChunk(TBuffer* buffer,const RECT *area,EVXBufferForEachChunkCallBack proc,void *priv);
-
- BOOLEAN RDXAPI EVXChunkLockForRead(TChunk *achunk);
- BOOLEAN RDXAPI EVXChunkLockForWrite(TChunk *achunk);
- void RDXAPI EVXChunkUnlock(TChunk *achunk,BOOLEAN unlock);
- void* RDXAPI EVXChunkGetData(TChunk *achunk);
-
-
- //------T2DLineArt-----------
- void RDXAPI EVXBeginGroup(T2DLineArt *This);
- void RDXAPI EVXBeginPath(T2DLineArt *This,const VECTOR2 *P0);
- void RDXAPI EVXLineTo(T2DLineArt *This,const VECTOR2 *P1);
- void RDXAPI EVXCurveTo(T2DLineArt *This,const VECTOR2 *P1,const VECTOR2 *P2);
- void RDXAPI EVXBezierTo(T2DLineArt *This,const VECTOR2 *P1,const VECTOR2 *P2,const VECTOR2 *P3);
- void RDXAPI EVXEndPath(T2DLineArt *This);
- void RDXAPI EVXEndGroup(T2DLineArt *This);
- void RDXAPI EVXDrawVertex(T2DLineArt *This,const VECTOR2 *P0);
- void RDXAPI EVXDrawHandle(T2DLineArt *This,const VECTOR2 *P0);
- void RDXAPI EVXDrawControl(T2DLineArt *This,const VECTOR2 *P0);
-
- //--Random---
-
- long RDXAPI EVXRandom();
- void RDXAPI EVXRandomSeed(long newSeed);
-
- //ER 3.1
- //---PrimitiveRenderer---
- class TScene;
- class TPrimitiveBase;
-
- typedef void (RDXAPITYPE *EVXPrimRenderForEachSubPrimRendCallBack)(TINSTANCE *anInstance,void *priv);
- typedef void (RDXAPITYPE *EVXPrimBaseForEachPatchCallBack)(PATCH3D *aF,void *priv);
- typedef void (RDXAPITYPE *EVXPrimRenderForEachFacetteCallBack)(FACET3D *aF,void *priv);
-
- void RDXAPI EVXPrimSceneForEachSubPrimRend(TScene *This,EVXPrimRenderForEachSubPrimRendCallBack proc,void *priv);
- void RDXAPI EVXPrimBaseForEachDXFTriangle(TPrimitiveBase *This,EVXPrimRenderForEachFacetteCallBack proc,void *priv);
-
- void RDXAPI EVXPrimBaseForEachPatch(TPrimitiveBase *This,EVXPrimBaseForEachPatchCallBack proc,void *priv);
- BOOLEAN RDXAPI EVXPrimBaseIsPatchBased(TPrimitiveBase *This);
- void RDXAPI EVXPrimBaseForEachFacette(TPrimitiveBase *This,EVXPrimRenderForEachFacetteCallBack proc,void *priv);
-
- void RDXAPI EVXPrimBaseGetUVSpace(TPrimitiveBase *This, long uvSpaceID,UVSpaceInfo* result);
- void RDXAPI EVXPrimBaseGetFlatness(TPrimitiveBase *This, FIXED *flatness);
-
- void RDXAPI EVXPrimRenderGetUVSpace(TINSTANCE *This, long uvSpaceID,UVSpaceInfo* result);
- void RDXAPI EVXPrimRenderGetFlatness(TINSTANCE *This, FIXED *flatness);
-
- void RDXAPI EVXPrimRenderDraw(TINSTANCE *This, const TZBInfo *aZBInfo, short uvSpaceID);
- void RDXAPI EVXPrimRenderDrawLA(TINSTANCE *This, T2DLineArt *aLineArt,const TRANSCALE *aTS,TCamera *acamera,const RECT *area,short modeD);
- void RDXAPI EVXPrimRenderGetBoxes(TINSTANCE *This, const TZBInfo *aZBInfo,FIXED *minZ,FIXED *maxZ,BOX2D *clip,BOX3D *box);
- void RDXAPI EVXPrimRenderGetBB(TINSTANCE *This, BOX3D *bbox);
- void RDXAPI EVXPrimRenderDehydrate(TINSTANCE *This, short level);
- BOOLEAN RDXAPI EVXPrimRenderRayHit(TINSTANCE *This, const Ray3D *aR,const RayHitParameters *params,RayHit3D *hit);
- void RDXAPI EVXPrimRenderGetAllInfo(TINSTANCE *This, RayHit3D *hit,short *uvSpaceID);
-
- #ifdef __cplusplus
- }
- #endif
- #if defined(qPointersD0) && defined(__MWERKS__) && defined(qPowerPC)
- #pragma pointers_in_A0
- #endif
-
- void InitializeEVX(void);
- void TerminateEVX(void);
-
- #endif
-